L1-022 奇偶分家
题目 L1-022 奇偶分家
思路分析
1、奇偶性判定
我们判断一个数是奇数还是偶数,往往是通过取模 %来判断的,如下:
#include <stdio.h>
int main() {
if(5 % 2 == 1) {
printf("5是奇数\n");
}
if(6 % 2 == 0) {
printf("6是偶数\n");
}
return 0;
}
然而,我们也可以这么写:
#include <stdio.h>
int main() {
if(5 & 1) {
printf("5是奇数\n");
}
if( (6 & 1) ==0 ) {
printf("6是偶数\n");
}
return 0;
}
这是利用了奇数和偶数分别的二进制数的特性,如下表所示:
所以,我们对任何一个数,通过将它和 0b1 进行位与,结果为零,则必然这个数的二进制末尾位为0,根据以上表就能得出它是偶数了;否则,就是奇数。
代码实现
#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
int main()
{
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int n;cin>>n;
int cntj=0,cnto=0;
while(n--){
int tmp;cin>>tmp;
if(tmp&1) cntj++;
else cnto++;
}
cout<<cntj<<" "<<cnto;
return 0;
}
同类题型
视频讲解
⬅️ L1-021 重要的话说三遍 🏠 00-天梯赛 ➡️ L1-023 输出GPLT
💬 评论